package xyz.lwm.lazycat.netpipe.domain.vo;

import lombok.Data;
import lombok.experimental.Accessors;
import xyz.lwm.lazycat.netpipe.domain.enums.TokenType;
import xyz.lwm.lazycat.utility.StringUtil;

/**
 * @author lwm
 */
@Data
@Accessors(chain = true)
public class Token {

    /**
     * 令牌类型
     */
    private TokenType type;

    /**
     * 令牌
     */
    private String key;


    @Override
    public String toString() {
        return type.toString().toLowerCase() + "@" + key;
    }

    public static Token of(String token) {
        if (StringUtil.isNotBlank(token)) {
            int i = token.indexOf("@");
            if (i > 0) {
                String type = token.substring(0, i);
                String key = token.substring(i + 1);
                return new Token().setType(TokenType.getByType(type)).setKey(key);
            }
        }
        return null;
    }

}
